package Clases.domain;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import pos.data.JDBCBarrioDAO;
import pos.data.JDBCContenedorDAO;
import pos.data.JDBCManifestacionDAO;
import pos.data.JDBCUsuarioDAO;

public class ReciclajeStore {

	private static ReciclajeStore rs;

	private static List barrios;

	public static synchronized ReciclajeStore getInstance() {
		if (rs == null)
			rs = new ReciclajeStore();
		return rs;
	}

	private ReciclajeStore() {

		barrios = (new JDBCBarrioDAO()).selectAllBarrios();
	}

	// Este metodo nos devuelve una lista de los barrios existentes
	public List getBarrios() {
		return barrios;
	}

	// Este metodo nos devuelve un barrio existente en nuestra lista, en caso de
	// no existir devuelve null

	public Barrio getBarrio(String ba) {
		Barrio resultado = null;
		for (Iterator iter = barrios.iterator(); iter.hasNext();) {
			Barrio b = (Barrio) iter.next();
			if (b.getNombre().compareTo(ba) == 0) {
				resultado = b;
			}
		}
		return resultado;

	}

	public List getAllManifestaciones() {

		List manifestaciones = (new JDBCManifestacionDAO())
				.selectAllManifestacion();
		return manifestaciones;
	}

	public List getManifestacionesZona(String nomBarrio, String nomZona) {

		List manifestaciones = new LinkedList();

		Iterator itbarrios = barrios.iterator();
		while (itbarrios.hasNext()) {
			Barrio b = (Barrio) itbarrios.next();

			if (b.getNombre().equals(nomBarrio)) {
				List zonas = b.getZonas();
				Iterator itzonas = zonas.iterator();

				while (itzonas.hasNext()) {
					Zona z = (Zona) itzonas.next();

					if (z.getNombre().equals(nomZona)) {
						manifestaciones = z.getZonaManifestaciones();
					}
				}

			}

		}
		return manifestaciones;

	}

}